#pragma once

enum SERVICE_ERROR_CODE
{
	SETUP_SERVICE_ERROR_UNKNOWN = 0,
	SETUP_SERVICE_ERROR_SUCCESS,
	SETUP_SERVICE_ERROR_PATH_INVALID,
	SETUP_SERVICE_ERROR_ACCESS_DENIED,
	SETUP_SERVICE_ERROR_SERVICE_EXISTS,
	SETUP_SERVICE_ERROR_SERVICE_DOES_NOT_EXIST,
	SETUP_SERVICE_ERROR_SERVICE_ALREADY_RUNNING
};

DWORD InstallService(LPCTSTR lpServiceName, LPCTSTR lpDisplayName, LPCTSTR lpDescripName, DWORD dwServiceType, DWORD dwStartType, LPCTSTR lpBinaryPathName);
DWORD UnInstallService(LPCTSTR lpServiceName);
DWORD RunService(LPCTSTR lpServiceName, DWORD dwNumServiceArgs, LPCTSTR *lpServiceArgVectors);
DWORD UnRunService(LPCTSTR lpServiceName);
DWORD ReleaseService(LPCTSTR lpServiceName);
DWORD IsServiceExist(LPCTSTR lpServiceName);
HANDLE GetKernelHandle(LPCTSTR lpcKernelName);
